From: Alex Williamson Date: Fri, 12 Oct 2007 20:36:37 +0000 (-0600) Subject: [IA64] vti domain save/restore: make vmx_vcpu_set_rr() accept non-current X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14870 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22man:///%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22man:/?a=commitdiff_plain;h=456c810d674c74f704f67dc5311531a37d846bea;p=xen.git [IA64] vti domain save/restore: make vmx_vcpu_set_rr() accept non-current make vmx_vcpu_set_rr accept non-current vcpu for setting vcpu context. Signed-off-by: Isaku Yamahata --- diff --git a/xen/arch/ia64/vmx/vmx_vcpu.c b/xen/arch/ia64/vmx/vmx_vcpu.c index 4308d36661..63d2e945fa 100644 --- a/xen/arch/ia64/vmx/vmx_vcpu.c +++ b/xen/arch/ia64/vmx/vmx_vcpu.c @@ -171,23 +171,25 @@ IA64FAULT vmx_vcpu_set_rr(VCPU *vcpu, u64 reg, u64 val) VMX(vcpu,vrr[reg>>VRN_SHIFT]) = val; switch((u64)(reg>>VRN_SHIFT)) { case VRN7: - vmx_switch_rr7(vrrtomrr(vcpu,val), - (void *)vcpu->arch.vhpt.hash, pal_vaddr ); + if (likely(vcpu == current)) + vmx_switch_rr7(vrrtomrr(vcpu,val), + (void *)vcpu->arch.vhpt.hash, pal_vaddr ); break; case VRN4: rrval = vrrtomrr(vcpu,val); vcpu->arch.metaphysical_saved_rr4 = rrval; - if (is_virtual_mode(vcpu)) + if (is_virtual_mode(vcpu) && likely(vcpu == current)) ia64_set_rr(reg,rrval); break; case VRN0: rrval = vrrtomrr(vcpu,val); vcpu->arch.metaphysical_saved_rr0 = rrval; - if (is_virtual_mode(vcpu)) + if (is_virtual_mode(vcpu) && likely(vcpu == current)) ia64_set_rr(reg,rrval); break; default: - ia64_set_rr(reg,vrrtomrr(vcpu,val)); + if (likely(vcpu == current)) + ia64_set_rr(reg,vrrtomrr(vcpu,val)); break; }